package com.leetcode.List;

/**
 *  执行时间1ms,击败51%，这个做法执行时间挺长的。。。看看有没有什么方法可以加快执行时间的
 */
public class Leetcode19 {

    /**
     * 删除倒数第N个节点，就要找到倒数第N+1个节点
     * @param head 头结点
     * @param n 要删除的元素
     * @return 返回头节点
     */
    public ListNode removeNthFromEnd(ListNode head, int n) {

        ListNode p = head;
        while (n >= 0) {
            // 删除第一个节点
            if (p == null) {
                return head.next;
            }
            p = p.next;
            n--;
        }

        ListNode l = head;
        while (p != null) {
            p = p.next;
            l = l.next;
        }
        if (l.next.next == null) {
            // 删除最后一个节点
            l.next = null;
        } else {
            l.next = l.next.next;
        }
        return head;
    }

    public static void main(String[] args) {
        ListNode n1 = new ListNode(1);
        //ListNode n2 = new ListNode(2);
        //n1.next = n2;
        Leetcode19 leet = new Leetcode19();
        leet.removeNthFromEnd(n1,1);
    }

}
